Determining the location of a mobile computing device

ABSTRACT

A method of determining the location of a client device includes selecting sets of four access points (APs) from APs that can communicate with a client device. Each set of four APs forms a quadrilateral that contains the location of the client device. The method further includes selecting a first quadrilateral from quadrilaterals formed by the sets of four APs based on a policy, and, with the first quadrilateral, executing a time-of-flight (ToF)-based distance estimation process to determine the location of the client device.

BACKGROUND

Indoor localization systems seek to determine the location of a client computing device such as a mobile phone within an area such as an office space. Being able to determine the location of a mobile device in such an environment may assist in locating the device as well as an individual using the device, and has potential for application in various location-based services. One component in an indoor localization system is a mechanism that estimates a distance between the mobile device and an access point (AP). Estimated distances between a mobile device and multiple APs may be used to calculate the exact location of the mobile device through a multilateration technique.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings illustrate various examples of the principles described herein and are a part of the specification. The illustrated examples are given merely for illustration, and do not limit the scope of the claims.

FIG. 1 is a schematic depiction of a localization system within an indoor environment, according to one example of the principles described herein.

FIG. 2 is a schematic depiction of access points within the localization system of FIG. 1, according to one example of the principles described herein.

FIG. 3 is a diagram of an access point (AP), according to one example of the principles described herein.

FIG. 4 is a flowchart showing a method of determining the location of a client device, according to one example of the principles described herein.

FIG. 5 is a flowchart showing a method of determining the location of a client device, according to another example of the principles described herein.

FIG. 6 is a schematic depiction of access points within the localization system of FIG. 2 in relation to x,y coordinate planes, according to one example of the principles described herein.

Throughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements.

DETAILED DESCRIPTION

Methods, systems, and computer program products are described herein for use in determining the location of client devices within an area. In one example, the area is an indoor area such as an office or home. The distance between a mobile device and an access point (AP) is determined by four APs, the APs forming a quadrilateral. The APs utilize a time-of-flight (ToF)-based distance estimation process to determine the location of the client device. Many quadrilaterals of APs may exist around the client device, and processes and policies are applied to determine the four APs and their associated quadrilateral that may best determine the location of the client device. The systems and methods described herein reduce network overhead associated with the transmission of multiple probe packets to a client device by multiple APs. The systems and methods described herein do not require any change in the IEEE 802.11 format and can be implemented on off-the-shelf wireless chipsets.

In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present systems and methods. It will be apparent, however, to one skilled in the art that the present apparatus, systems and methods may be practiced without these specific details. Reference in the specification to “an example” or similar language means that a particular feature, structure, or characteristic described in connection with that example is included as described, but may not be included in other examples.

ToF-based distance estimation processing is a viable and robust method for locating a client device within an area. In one example, the localization system is a WiFi-based indoor localization system. In ToF-based distance estimation processing, each access point (AP) estimates the distance of a client device from themselves. The APs calculate the client device's location using an optimization called multilateration. The localization system uses ToF-based distance estimation processing values from at least 3 or 4 APs to determine the location of the client device. In some cases, there may be several APs that can estimate the client device's location. However, using, for example, 10 APs to determine the client device's location adds significantly to the overhead experienced within the WiFi-based localization system. Further, these APs may introduce errors in location estimation, and, for this reason should be avoided. Thus, the present systems and methods can select an appropriate set of APs that participate in ToF-based distance estimation and localization.

However, for a specific client device, there may be several APs that may participate in locating the client device. For example, in an enterprise environment such as an office space, there may be more than 10 APs that are within the client's range that may participate in locating the client device. However, as described above, using all 10 APs may increase the network overhead of ToF-based distance estimation processing and localization. This is because each AP transmits multiple probe packets to estimate the distance of the client device. Thus, the higher number of APs used in this processing, the greater the number of probe packets sent within the localization system. This will, in turn, increase the overhead within the localization system.

FIG. 1 is a schematic depiction of a localization system (100) in within an indoor environment (150), according to one example of the principles described herein. Although the localization system (100) is depicted as being used within the indoor environment (150), the localization system (100) may be employed in any indoor or outdoor environment in which the location of a mobile device may be determined. Mobile devices (101, 102) may be located within rooms (130, 131, 132, 133, 134) of the indoor environment (150). The mobile devices may be mobile phones (101, 102), laptop computing devices, tablet computing devices, or other types of mobile computing devices.

The localization system (100) of FIG. 1 may comprise access points (110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126), collectively referred to as element “110, et cetera”, may be distributed throughout the indoor environment (150). In one example, the access points (APs) (110, et cetera) may be located within the rooms (130, 131, 132, 133, 134) of the indoor environment (150). In another example, the APs (110, et cetera) may be located within common areas such as hallways, stairwells, and reception areas, for example. The APs (110, et cetera) may communicate with any number of the mobile devices (101, 102) and any number of other APs (110, et cetera).

In determining or estimating a distance between a target client device (101, 102) and an AP (110, et cetera), the AP may measure the time-of-flight (ToF) of probe packets sent to the target client device (101, 102). Upon sending the probe packets, the AP (110, et cetera) receives acknowledgement (ACK) packets sent by the client devices (101, 102). A ToF-based distance estimation process captures how long it takes a probe packet from a client device (101, 102) to arrive at an AP (110, et cetera). From a ToF measurement, a propagation delay (T) between an AP (110, et cetera) and a client device (101, 102) can be obtained. Consequently, the distance between the client device (101, 102) and the AP (110, et cetera) may be estimated by the following equation:

T*c   Eq. 1

where c is the speed of light.

The advantage of a ToF-based distance estimation process is that this process does not depend on the characteristics of the wireless medium in which the probe packets are transmitted since the speed of light does not change depending on the medium. However, ToF-based distance estimation processes and their associated measurements include noise. This is because the detection time of an acknowledgement packet preamble in WiFi is not fixed. Hence, to obtain accuracy in a ToF-based distance estimation process, many samples of ToF measurements are collected, and outliers within the captured measurements are removed. This requires an AP (110, et cetera) to send many probe packets in a given time period. Sending many probe packets in this manner creates a large overhead to the wireless network in which the ToF-based distance estimation process is being used. This overhead limits the number of users that a localization system (100) can support. This also restricts the scalability of the localization system (100), increasing the cost in time and processing resources to determine the location of client devices (101, 102) that exceed an overhead capacity. Thus, an advantage of the localization system (100), as will be described in more detail below, is to limit the number of APs (110, et cetera) engaged in the process of locating a particular client device (101, 102).

ToF-based distance estimation process may use 3 or 4 APs (110, et cetera) to calculate the location of the client device (101, 102). The present systems and methods assist in determining which 3 or 4 APs (110, et cetera) should participate in determining the location of the client device (101, 102) within the indoor environment (150). One option may be to randomly choose 3 or 4 APs (110, et cetera), and instruct those chosen APs (110, et cetera) to determine the location of the client device (101, 102). However a wrong set of APs (110, et cetera) may adversely affect the accuracy of the localization system (100). Thus, the present systems and methods select the most appropriate set of APs (110, et cetera) so that location accuracy is not compromised.

In experimental analysis, it was found that a ToF-based localization process works well when the chosen set of APs (110, et cetera) surrounds the target client device (101, 102). As depicted in FIG. 1, for example, client device (101) may be located by any set of 3 or 4 APs (110, et cetera). In one example, the closest 4 APs (110, et cetera) may be chosen which are, in the case of client device 101, AP (113), AP (121), AP (122), and AP (124). However, AP (110), AP (111), AP (112), or AP (126), for example, should be chosen over AP (122) because these APs form a quadrilateral within which the client device (101) is located. Given this observation, the present systems and methods select a set of 4 APs (110, et cetera) such that the client device (101, 102) is located within a quadrilateral formed by the 4 APs (110, et cetera). A similar situation may arise in connection with mobile device (102) and the APs (115, 116, 117, 118, 119, 120) that surround it.

FIG. 2 is a schematic depiction of access points (110, 111, 112, 113, 114, 121, 122, 123, 124, 125, 126) within the localization system (100) of FIG. 1, according to one example of the principles described herein. As depicted in both FIGS. 1 and 2, quadrilaterals may be formed from 4 APs (110, 111, 112, 113, 114, 121, 122, 123, 124, 125, 126). FIG. 2 is included here to provide a detail view of the various quadrilaterals that are formed including and in addition to those depicted in FIG. 1. As depicted in FIG. 2, at least seven quadrilaterals (201, 202, 203, 204, 205, 206, 207) may be formed between APs (110, 111, 112, 113, 114, 121, 122, 123, 125, 126). It is noted that APs 123 and 125 are not included as one of four points in any quadrilateral (201, 202, 203, 204, 205, 206, 207). This is because, in this example, APs 123 and 125 are out of range with respect to the client device (101), and, therefore, cannot communicate with the client device (101), determine a distance between themselves and the client device (101) using a ToF-based distance estimation process, or determine the location of the client device (101).

The various quadrilaterals (201, 202, 203, 204, 205, 206, 207) are designated by different line patterns in FIG. 2, and will now be described in more detail. Quadrilateral (201) is formed from APs 110, 113, 124, and 126, and has within its borders the client device (101). Quadrilateral (202) is formed from APs 110, 113, 122, and 124, and has within its borders the client device (101). Quadrilateral (204) is formed from APs 112, 113, 114, and 124, and has within its borders the client device (101). Quadrilateral (205) is formed from APs 112, 113, 121, and 124, and has within its borders the client device (101). Quadrilateral (206) is formed from APs 110, 113, 122, and 124, and has within its borders the client device (101).

In contrast, quadrilateral (203) is formed from APs 110, 111, 112, and 113, and does not contain the client device (101) within its borders. Further, quadrilateral (207) is formed from APs 113, 121, 122, and 124, and also does not contain the client device (101) within its borders. Thus, in one example, quadrilateral (203) is not considered as a candidate quadrilateral because it does not contain the mobile device (101).Thus, in one example, quadrilateral (207), despite comprising APs 113, 121, 122, and 124 that are located closer to the client device (101) than other APs, is not considered as a candidate quadrilateral because it does not contain the mobile device (101).

Turning to FIG. 3, FIG. 3 is a diagram of an access point (AP) (110, et cetera), according to one example of the principles described herein. The AP depicted in FIG. 3 is exemplary for all APs utilized within the localization system (100). The AP (300) may be any electronic computing device that allows the mobile devices (101, 102) to connect to a wired network using, for example, Wi-Fi, or related standards. Examples of APs (300) include standalone electronic devices to connect the mobile devices (101, 102) to a router, routers, wireless routers, industrial access points, and industrial wireless access points, among other electronic devices.

The AP (300) may be utilized in any data processing scenario including, stand-alone hardware, mobile applications, through a computing network, or combinations thereof. Further, the AP (300) may be used in a computing network, a public cloud network, a private cloud network, a hybrid cloud network, other forms of networks, or combinations thereof. In one example, the methods provided by the AP (300) are provided as a service over a network by, for example, a third party. In this example, the service may comprise, for example, the following: a Software as a Service (SaaS) hosting applications; a Platform as a Service (PaaS) hosting a computing platform comprising, for example, operating systems, hardware, and storage, among others; an Infrastructure as a Service (IaaS) hosting equipment such as, for example, servers, storage components, network, and components, among others; application program interface (API) as a service (APIaaS), other forms of network services, or combinations thereof. The present systems may be implemented on one or multiple hardware platforms, in which the modules in the system can be executed on one or across multiple platforms. Such modules can run on various forms of cloud technologies and hybrid cloud technologies or offered as a SaaS (Software as a service) that can be implemented on or off the cloud. In another example, the methods provided by the AP (300) are executed by a local administrator.

To achieve its desired functionality, the AP (300) comprises various hardware components. Among these hardware components may be processors (301), data storage devices (302), peripheral device adapters (303), and network adapters (304). These hardware components may be interconnected through the use of busses and/or network connections. In one example, the processor (301), data storage device (302), peripheral device adapters (303), and a network adapter (304) may be communicatively coupled via a bus (305). Each AP (110, et cetera) within the localization system (100) comprises the processor (301), data storage device (302), peripheral device adapters (303), and a network adapter (304) may be communicatively coupled via a bus (305) to support the functionality described herein.

The processor (301) may include the hardware architecture to retrieve executable code from the data storage device (302) and execute the executable code. The executable code may, when executed by the processor (301), cause the processor (301) to implement at least the functionality of selecting sets of four access points (APs) (110, et cetera) from APs (110, et cetera) that can communicate with a client device (101, 102), each set of four APs (110, et cetera) forming a quadrilateral (201, 202, 203, 204, 205, 206, 207) that contains the location of the client device (101, 102), selecting a first quadrilateral (201, 202, 203, 204, 205, 206, 207) from the quadrilaterals (201, 202, 203, 204, 205, 206, 207) formed by the sets of four APs (110, et cetera) based on policies, and with the first quadrilateral (201, 202, 203, 204, 205, 206, 207), executing a time-of-flight (ToF)-based distance estimation process to determine the location of the client device (101, 102), according to the methods of the present specification described herein. In the course of executing code, the processor (301) may receive input from and provide output to the remaining hardware units.

The data storage device (302) may store data such as executable program code that is executed by the processor (301) or other processing device. As will be discussed, the data storage device (302) may specifically store computer code representing applications that the processor (301) executes to implement at least the functionality described herein.

The data storage device (302) may include various types of memory modules, including volatile and nonvolatile memory. For example, the data storage device (302) of the present example includes Random Access Memory (RAM) (306), Read Only Memory (ROM) (307), and Hard Disk Drive (HDD) memory (308). Many other types of memory may also be utilized, and the present specification contemplates the use of many varying type(s) of memory in the data storage device (302) as may suit a particular application of the principles described herein. In certain examples, different types of memory in the data storage device (302) may be used for different data storage needs. For example, in certain examples the processor (301) may boot from Read Only Memory (ROM) (307), maintain nonvolatile storage in the Hard Disk Drive (HDD) memory (308), and execute program code stored in Random Access Memory (RAM) (306).

Generally, the data storage device (302) may comprise a computer readable medium, a computer readable storage medium, or a non-transitory computer readable medium, among others. For example, the data storage device (302) may be, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples of the computer readable storage medium may include, for example, the following: an electrical connection having a number of wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store computer usable program code for use by or in connection with an instruction execution system, apparatus, or device. In another example, a computer readable storage medium may be any non-transitory medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.

The hardware adapters (303, 304) in the AP (300) enable the processor (301) to interface with various other hardware elements, external and internal to the AP (300). For example, the peripheral device adapters (303) may provide an interface to input/output devices, such as, for example, a display device, a mouse, or a keyboard. The peripheral device adapters (303) may also provide access to other external devices such as an external storage device, network devices such as, for example, servers, switches, and routers, client devices, other types of computing devices, and combinations thereof.

The AP (300) further comprises modules used in the implementation of the localization system (100). The various modules within the AP (300) comprise executable program code that may be executed separately. In this example, the various modules may be stored as separate computer program products. In another example, the various modules within the AP (300) may be combined within computer program products, each computer program product comprising the modules.

The AP (300) may include a quadrilateral selection module (310) to, when executed by the processor (301), select sets of four access points (APs) (110, et cetera) from APs (110, et cetera) that can communicate with a client device (101, 102), each set of four APs (110, et cetera) forming a quadrilateral (201, 202, 203, 204, 205, 206, 207) that contains the location of the client device (101, 102). The quadrilateral selection module (310) may also select a first quadrilateral (201, 202, 203, 204, 205, 206, 207) from quadrilaterals (201, 202, 203, 204, 205, 206, 207) formed by the sets of four APs (110, et cetera) based on a policy, among other processes.

The AP (300) may also include a time-of-flight (ToF) distance estimation module (311) to, when executed by the processor (301), with the first quadrilateral, executing a time-of-flight (ToF)-based distance estimation process to determine the location of the client device (101, 102), among other processes. The methods by which the APs within the localization system (100) processes data will now be described in more detail in connection with FIGS. 4 and 5. Each AP (110, et cetera) within the localization system (100) comprises the quadrilateral selection module (310) and the ToF distance estimation module (311) to support the functionality described herein. Further, the APs (110, et cetera) may coordinate data among each other to, for example, identify or determine quadrilaterals (201, 202, 203, 204, 205, 206, 207) that are formed between sets of four APs (110, et cetera), applying the policies described herein, and to execute ToF-based distance estimation processing to determine the location of the client device (101, 103) among other functions.

FIG. 4 is a flowchart (400) showing a method of determining the location of a client device (101, 102), according to one example of the principles described herein. The method (400) of FIG. 4 may begin by selecting (block 401), with the quadrilateral selection module (310) executed by the processor (301) of one or more APs (110, et cetera), sets of four APs (110, et cetera) from APs (110, et cetera) that can communicate with a client device (101, 102). Each set of four APs (110, et cetera) forms a quadrilateral (201, 202, 203, 204, 205, 206, 207) that contains the location of the client device (101, 102). The quadrilateral selection module (310) executed by the processor (301) selects (block 402) a first quadrilateral from quadrilaterals (201, 202, 203, 204, 205, 206, 207) formed by the sets of four APs (110, et cetera) based on a policy. The ToF distance estimation module (311), executed by the processor (301) executes (block 403) a time-of-flight (ToF)-based distance estimation process, using the first quadrilateral as input, to determine the location of the client device. Details regarding the method of FIG. 4 will now be described in connection with FIG. 5.

FIG. 5 is a flowchart showing a method (500) of determining the location of a client device (101, 102), according to another example of the principles described herein. The method (500) may begin by determining (block 501), with the APs (110, et cetera) whether the location of the client device (101, 102) is known. If the location of the target client device (101, 102) is not known (block 501, determination NO), then the localization system (100) uses the APs (110, et cetera) to determine (block 502) the location of the target client device (101, 102). Those APs used to determine the location of the target device (101, 102) execute, with the processor (301), the ToF distance estimation module (311) to determine the ToF distance as described above. In one example, all nearby APs (110, et cetera) are used to determine the location of the target client device (101, 102). In this example, APs (110, et cetera) within a predetermined distance from the client device (101, 102) participate in the ToF-based distance estimation process. In another example, all APs (110, et cetera) that can communicate with the client device (101, 102) are used to determine the location of the client device (101, 102).

If the location of the target client device (101, 102) is known (block 501, determination YES), or if the location of the target client device (101, 102) is determined at block 502, then the localization system (100), executing the quadrilateral selection module (310) with the processor (101) of each AP 110 et cetera), determines (block 503) all possible quadrilaterals within which the client device (101, 102) is located. As described above in connection with the description of FIG. 2, at least seven quadrilaterals (201, 202, 203, 204, 205, 206, 207) may be formed between APs (110, 111, 112, 113, 114, 121, 122, 123, 125, 126) in the example of FIG. 2. APs 123 and 125 of FIG. 2 are not included as one of four points in any quadrilateral (201, 202, 203, 204, 205, 206, 207). This is because, in this example, APs 123 and 125 are out of range with respect to the client device (101), and, therefore, cannot communicate with the client device (101), determine a distance between themselves and the client device (101) using a ToF-based distance estimation process, or determine the location of the client device (101). The quadrilaterals (201, 202, 203, 204, 205, 206, 207) are formed by creating boundary lines between neighboring APs (110, et cetera). Thus, the joining of lines between APs (110, et cetera) creates the quadrilaterals (201, 202, 203, 204, 205, 206, 207).

Block 503 may begin by determining all possible quadrilaterals (201, 202, 203, 204, 205, 206, 207) formed by all APs (110, 111, 112, 113, 114, 121, 122, 123, 125, 126), and then disregarding those quadrilaterals (201, 202, 203, 204, 205, 206, 207) that do not contain the client device (101, 102). To determine which quadrilaterals (201, 202, 203, 204, 205, 206, 207) do and do not contain the client device (101, 102), the processor, executing the quadrilateral selection module (311), iterates through the entire set of quadrilaterals (201, 202, 203, 204, 205, 206, 207), and, for each quadrilateral (201, 202, 203, 204, 205, 206, 207), tests whether the location of the client device is contained therein. A computational geometry algorithm called “point-in-polygon” may perform this test. A point-in-polygon algorithm determines whether a given point in the plane such as the client device (101, 102) lies inside, outside, or on the boundary of a polygon.

In one example, all possible convex quadrilaterals are found at block 503 for each set of four two-dimensional (2D) points. The 2D points represent the location of the APs (110, et cetera) that can communicate with the client device (101, 102) as depicted in, for example, FIG. 2. A quadrilateral is convex if its diagonals intersect. Conversely, if two line segments intersect, then their four endpoints make a convex quadrilateral. In this example, the processor, executing the quadrilateral selection module (311), selects every pair of points (APs 110, et cetera) that yields a line segment. Every point of intersection between two line segments corresponds to a convex quadrilateral.

The localization system (100), executing the quadrilateral selection module (311) by the processor (301), reduces (block 504) the number of quadrilaterals. In one example, the number of quadrilaterals (110, et cetera) may be reduced by applying one or more optimizations. One optimization may include not considering large quadrilaterals. The localization system (100) may be able to find smaller quadrilaterals containing the location of the client device (101, 102). In one example of avoiding large quadrilaterals (201, 202, 203, 204, 205, 206, 207), the localization system (100) selects only line segments that are shorter than a predetermined length. For example, the predetermined length may be 40 meters. Thus, in this example, quadrilaterals (201, 202, 203, 204, 205, 206, 207) that comprise one or both line segments that are longer than 40 meters, then that quadrilateral (201, 202, 203, 204, 205, 206, 207) is not considered a candidate.

The localization system (100), executing the quadrilateral selection module (311), selects (block 505) a quadrilateral from the candidate set obtained at blocks 503 and 504 based on a policy. The APs (110, et cetera) forming the vertices of this selected quadrilateral (201, 202, 203, 204, 205, 206, 207) are the APs (110, et cetera) that participate in determining the location of the client device (101, 102). This selected quadrilateral (201, 202, 203, 204, 205, 206, 207) from the candidate set is determined using one of several policies that avoid relatively distant APs (110, et cetera):

One such policy is selection of the quadrilateral (201, 202, 203, 204, 205, 206, 207) with the smallest area as the selected quadrilateral (201, 202, 203, 204, 205, 206, 207). In the example of FIG. 2, this selected quadrilateral may be, for example, either quadrilateral (201) or quadrilateral (205), both of which have relatively smaller areas than other quadrilaterals. The processor, executing the quadrilateral selection module (311), may determine area using the following equation for the area of a convex quadrilateral:

K=½pq·sin θ  Eq. 2

where the lengths of the diagonals are p and q and the angle between them is θ.

Selection of the quadrilateral (201, 202, 203, 204, 205, 206, 207) under this policy will ensure that the distance of the client device (101, 102) from the APs (110, et cetera) are shorter, resulting in better localization performance.

Another such policy is selection of the quadrilateral (201, 202, 203, 204, 205, 206, 207) whose sum of the distances between the location of the client device (101, 102) and the vertices formed by the APs (110, et cetera) is a minimum.

Still another such policy is selection of the quadrilateral (201, 202, 203, 204, 205, 206, 207) whose sum-squared of the distances between the location of the client device (101, 102) and the vertices formed by the APs (110, et cetera) is a minimum. Experimentation, data indicates that application of this sum-squared policy provides a relatively higher accuracy using ToF-based distance estimation processing.

Using the selected quadrilateral (201, 202, 203, 204, 205, 206, 207), the APs (110, et cetera) within the selected quadrilateral (201, 202, 203, 204, 205, 206, 207) execute the ToF distance estimation module (311) to determine (block 506) the location of the client device (101, 102). In the processes described herein, once the location of the client device (101, 102) is determined, this location information may be presented to a user of the localization system (100) for use in locating the client device (101, 102) or a separate user using the client device (101, 102).

In the processes described above and in one example, the APs (110, et cetera) may be selected by the quadrilateral selection module (311) executed by the processor (310) based on the position of the APs (110, et cetera) within an x,y coordinate plane. FIG. 6 is a schematic depiction of APs (110, et cetera) within the localization system (100) of FIG. 2 in relation to x,y coordinate planes (601, 602), according to one example of the principles described herein. In the example of FIG. 6, the APs (110, et cetera), executing the quadrilateral selection module (311), may choose 4 APs (110, et cetera) and their corresponding quadrilaterals (201, 202, 203, 204, 205, 206, 207) as candidate APs and quadrilaterals based on whether those four APs are each separately located in one of four quadrants of a coordinate plane parallel to the area in which the client device (101, 102) exists, and whose origin is the client device (101, 102). The example of FIG. 6, coordinate plane (601) separates APs (113, 114) in the first quadrant, from APs (110, 111, 112) in the second quadrant, APs (124, 126) in the third quadrant, and APs (121, 122) in the fourth quadrant.

Quadrilateral (206), for example, contains AP (113) in the first quadrant, AP (110) in the second quadrant, AP (124) in the third quadrant, and AP (122) in the fourth quadrant. Therefore, under this additional x,y coordinate plane policy, quadrilateral (206) is a candidate quadrilateral because APs (113, 110, 124, 122) are each located in separate quadrants of the coordinate plane (601). Similarly, quadrilateral (202) is a candidate quadrilateral using APs (113, 110, 124, 121) as each of these APs are each located in separate quadrants of the coordinate plane (601). However, quadrilateral (201), for example, is not considered a candidate quadrilateral because APs (124, 126) lie in the same quadrant of the coordinate plane (601). The above may be similarly applied to quadrilaterals (203, 204, 205, 207).

In another example using this additional x,y coordinate plane policy, the coordinate plane may be oriented in any manner as depicted with coordinate plane (602) being oriented differently with respect to coordinate plane (601). The above analysis with regard to coordinate plane (601) described above, may be applied in connection with coordinate plane (602).

Aspects of the present system and method are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to examples of the principles described herein. Each block of the flowchart illustrations and block diagrams, and combinations of blocks in the flowchart illustrations and block diagrams, may be implemented by computer usable program code. The computer usable program code may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the computer usable program code, when executed via, for example, the processor (301) of the APs (110, et cetera) or other programmable data processing apparatus, implement the functions or acts specified in the flowchart and/or block diagram block or blocks. In one example, the computer usable program code may be embodied within a computer readable storage medium; the computer readable storage medium being part of the computer program product. In one example, the computer readable storage medium is a non-transitory computer readable medium.

The specification and figures describe methods, systems, and computer program products for determining the location of a client device includes selecting sets of four access points (APs) from APs that can communicate with a client device. Each set of four APs forms a quadrilateral that contains the location of the client device. The methods, systems, and computer program products further includes selecting a first quadrilateral from quadrilaterals formed by the sets of four APs based on a policy, and, with the first quadrilateral, executing a time-of-flight (ToF)-based distance estimation process to determine the location of the client device. This present systems and methods may have a number of advantages, including: the ability to locate a client device in an area without requiring a change in the IEEE 802.11 formats. Further, the present systems and methods drastically reduce overhead associated with multiple APs performing localization processes and sending probe packets over a network.

The preceding description has been presented to illustrate and describe examples of the principles described. This description is not intended to be exhaustive or to limit these principles to any precise form disclosed. Many modifications and variations are possible in light of the above teaching. 

What is claimed is:
 1. A method of determining the location of a client device, comprising: selecting sets of four access points (APs) from APs that can communicate with a client device, each set of four APs forming a quadrilateral that contains the location of the client device, selecting a first quadrilateral from quadrilaterals formed by the sets of four APs based on a policy, and with the first quadrilateral, executing a time-of-flight (ToF)-based distance estimation process to determine the location of the client device.
 2. The method of claim 1, in which each quadrilateral is defined by joining the APs of a set of APs.
 3. The method of claim 1, further comprising, prior to selecting the sets of four APs, determining the location of the client device using the APs that can communicate with the client device.
 4. The method of claim 1, in which selecting the four APs comprises selecting the four APs from the APs in which the quadrilateral formed by joining the selected APs comprises the smallest area.
 5. The method of claim 1, in which selecting the sets of four APs from the APs comprises finding all the quadrilaterals given a set of 2-dimensional (2D) points, the 2D points representing the location of the APs that can communicate with the client.
 6. The method of claim 1, further comprising reducing the number of quadrilaterals by excluding those quadrilaterals that comprise line segments which are less than a predefined distance.
 7. The method of claim 6, in which the predefined distance is 40 meters.
 8. The method of claim 1, in which the quadrilaterals are convex quadrilaterals.
 9. The method of claim 1, further comprising reducing the number of quadrilaterals based on whether a set of four APs are each separately located in one of four quadrants of a coordinate plane parallel to the area in which the client device exists, and whose origin is the client device.
 10. The method of claim 1, in which the policy comprises: selecting the first quadrilateral from the quadrilaterals that comprises the smallest area; selecting the first quadrilateral from the quadrilaterals that comprises a minimum sum of the distances of the location of the client device from the vertices of the quadrilateral; or selecting the first quadrilateral from the quadrilaterals that comprises a minimum sum-squared of the distances of the location of the client device from the vertices of the quadrilateral.
 11. The method of claim 1, in which a point-in-polygon process is executed to determine whether each set of four APs forming a quadrilateral contains the location of the client device.
 12. A computer program product for selecting access points (APs) for time-of-flight (ToF)-based positioning of a client device, the computer program product comprising: a computer readable storage medium comprising computer usable program code embodied therewith, the computer usable program code comprising: computer usable program code to, when executed by a processor, select sets of four APs from APs that can communicate with a client device, each set of four APs forming a quadrilateral that contains the location of the client device; and computer usable program code to, when executed by the processor, select a first quadrilateral from the quadrilaterals formed by the sets of four APs based on a policy.
 13. The computer program product of claim 12, further comprising computer usable program code to, when executed by the processor, with the first quadrilateral, execute a time-of-flight (ToF)-based distance estimation process to determine the location of the client device.
 14. A localization system for locating a client device in an area, comprising: a plurality of access points (APs) located within the area, each AP comprising: a processor; and a memory, the memory comprising executable code that, when executed by the processor: determines whether a location of the client device is know; if the location of the client device is not known, determines the location of the client device using the APs; determines all possible quadrilaterals, the quadrilaterals being formed by selecting sets of four APs from APs that can communicate with a client device, each set of four APs forming a quadrilateral that contains the location of the client device; reduces the number of quadrilaterals to create a group of candidate quadrilaterals; selects a quadrilateral from the group of candidate quadrilaterals; and with the selected quadrilateral, executing a time-of-flight (ToF)-based distance estimation process to determine the location of the client device.
 15. The localization system of claim 14, in which the memory comprises executable code that, when executed by the processor, reduces the number of quadrilaterals based on whether a set of four APs are each separately located in one of four quadrants of a coordinate plane parallel to the area in which the client device exists, and whose origin is the client device. 